# Japanese README
= INTRO =

sshtはsshを用いたポートフォワードを行うPythonスクリプトである.
sshはもともとポートフォワードができるが下記のような問題点がある．

  * フォワードポートを動的に追加，削除することができない
  * ポート番号を静的に指定しなければならない
  * sshd側の設定によっては，リモートポートをlocalhost以外の
  アドレスに対してオープンすることができない

sshtはこれらの問題点を解決する．

= USAGE =

ssht を起動すると，標準入力-出力に対して制御用のコンソールが
開く．このコンソールを持ちいて，ポートフォワードを制御する．
コンソールは，他のプログラムから制御することを装丁している．
複数の制御コマンドをノンブロッキングで処理するために，
非同期のプロトコルとなっている．具体的には入力に対しては
即座にRequest IDが返答され，その後，動作の結果が
{{{
 RequestID S|F ...
}}}
の形式で返される．

使用できるコマンドは以下の通り

  * L [bind_address:]port:host:hostport

  ssh の -L とほぼ同じ．ローカルなポートをリモートにフォワードする．
  bind_addressは省略時には，すべてのアドレスとなる．
  portには，FROM-TOの表現で，ポートレンジを指定することが可能．
  また，0を指定するとポートは任意に選択される．
  実際に使用されたポートは，コンソールに出力される．  


  *  R [bind_address:]port:host:hostport

  ssh の -R とほぼ同じ．リモートのポートをローカルにフォワードする．
  bind_addressは省略時には，loopbackとなる．{{{*}}} を指定する
  ことで，すべてのアドレスとすることが可能．
  portに関しては L と同じ．


  * C ID

  指定したポートフォワードに関する新たなアクセプトを中止
  すでにアクセプトされているフォワードは継続する．

  * X ID

  指定したポートフォワードを中止．すでに設立されている
  フォワードは切断．

  * Q 

  終了する．すべてのポートフォワードは切断される．


= OPTIONS = 

起動時のオプションは下記の通り
  * -L [bind_address:]port:host:hostport
  * -R [bind_address:]port:host:hostport
  これらはコマンドの L/R に準じる．

  * -ssh_options_begin OPT OPT .. -ssh_options_end
  -ssh_options_begin と -ssh_options_end の間に
  任意個数のオプションを指定することができる．
  これらのオプションは，sshにそのまま渡される．